package com.zenithmind.mall.service;

import com.zenithmind.mall.pojo.vo.CouponVO;

import java.math.BigDecimal;
import java.util.List;

/**
 * 优惠券用户服务接口 - 遵循接口隔离原则，专门负责用户相关的优惠券操作
 * 
 * @author ZenithMind Team
 * @since 2025-07-03
 */
public interface CouponUserService {

    /**
     * 获取可用优惠券列表
     * 
     * @param userId 用户ID
     * @param orderAmount 订单金额
     * @return 可用优惠券列表
     */
    List<CouponVO> getAvailableCoupons(String userId, BigDecimal orderAmount);

    /**
     * 获取用户优惠券列表
     * 
     * @param userId 用户ID
     * @param status 状态（0-未使用，1-已使用，2-已过期）
     * @return 用户优惠券列表
     */
    List<CouponVO> getUserCoupons(String userId, Integer status);

    /**
     * 领取优惠券
     * 
     * @param couponId 优惠券ID
     * @param userId 用户ID
     * @return 是否成功
     */
    Boolean receiveCoupon(String couponId, String userId);

    /**
     * 检查用户是否可以领取优惠券
     * 
     * @param couponId 优惠券ID
     * @param userId 用户ID
     * @return 是否可以领取
     */
    Boolean canReceiveCoupon(String couponId, String userId);

    /**
     * 获取用户已领取的优惠券数量
     * 
     * @param couponId 优惠券ID
     * @param userId 用户ID
     * @return 已领取数量
     */
    Integer getUserReceivedCount(String couponId, String userId);
}
